#ifndef ZIGBEE3DEVICE_H
#define ZIGBEE3DEVICE_H

#include "BaseDevice.h"
#include "Protocol/PointProtocol.h"
#include "Protocol/ZigbeeConfigProtocol.h"
#include "Protocol/ZigbeeControlProtocol.h"
#include "Protocol/ZigbeeNewControlProtocol.h"
#include "Command/PointProtocol/WinSetZigbeeParamCmd.h"
#include "Command/ZigbeeProtocol/SetZigbeeParamCmd.h"
#include "Command/PointProtocol/WinGetZigbeeParamCmd.h"
#include "Command/ZigbeeProtocol/GetZigbeeParamCmd.h"
#include "Command/PointProtocol/WinRestartZigbeeCmd.h"
#include "Command/PointProtocol/WinStartNewZigbeeCmd.h"
#include"Command/PointProtocol/WinSetNewZigbeeCmd.h"
#include "Command/ZigbeeProtocol/RestartZigbeeCmd.h"
#include "Command/ZigbeeProtocol/EquipmentIntoNetCmd.h"
#include "Command/ZigbeeProtocol/ReceiveControlPointListCmd.h"
#include "Command/ZigbeeProtocol/SendControlPointListCmd.h"
#include"Command/ZigbeeProtocol/SetNewZigbeeNetCmd.h"
#include "Command/ZigbeeProtocol/Zigbee3NewJoinParamCmd.h"
#include"Command/ZigbeeProtocol/Zigbee3ControlPointListCmd.h"
#include "Command/ZigbeeProtocol/Zigbee3QueryBackCmd.h"
#include "Command/ZigbeeProtocol/ZigBee3BackQueryCmd.h"
#include "Command/ZigbeeProtocol/Zigbee3QuitBackCmd.h"
#include "Command/ZigbeeProtocol/ZigBee3QueryVersionCmd.h"
#include "Command/ZigbeeProtocol/Zigbee3DataCmd.h"

#include "Function/ControlPointFunc.h"
#include"Function/LogicCloudDataFunc.h"

#include "File/Xml/ZigbeeListXml.h"
#include "File/Xml/Zigbee3ListXml.h"
#include "File/Xml/Zigbee3InfraredXml.h"
class Zigbee3Device : public BaseInterface<Zigbee3Device>
{
    Q_OBJECT
public:
    Q_INVOKABLE explicit Zigbee3Device(QObject *parent = 0);
private:
    PointProtocol *pointProtocol;
    ZigbeeConfigProtocol *zigbeeConfigProtocol;
    ZigbeeControlProtocol *zigbeeControlProtocol;
    ZigbeeNewControlProtocol *zigbeeNewControlProtocol;

    void controlPointFuncHandle(QSharedPointer<BaseFunc> sharedFunc);
    void Zigbee3NewJoinParamCmdHandle(PortStruct source, QSharedPointer<BaseCmd> sharedCmd);
    void zigbee3DataHandle(PortStruct source, QSharedPointer<BaseCmd> sharedCmd);
    void zigbee3QueryBackDataHandle(PortStruct source, QSharedPointer<BaseCmd> sharedCmd);
    void Zigbee3QuitBackCmdHandle(PortStruct source, QSharedPointer<BaseCmd> sharedCmd);
    void Zigbee3QuitVersionCmdHandle(PortStruct source, QSharedPointer<BaseCmd> sharedCmd);
};



#endif // ZIGBEE3DEVICE_H
